package com.denlaku.longan.service;

import com.denlaku.longan.qo.UserQuery;
import com.denlaku.longan.vo.User;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author tianx
 */
@Service
public interface UserService {
	/**
	 * 根据用户ID获取用户
	 *
	 * @param id 用户ID
	 * @return 用户
	 */
	User get(Long id);

	/**
	 * 根据参数查询用户密码
	 *
	 * @param account 查询参数-用户账号
	 * @return 用户密码
	 */
	String getPassword(String account);

	/**
	 * 根据用户账号获取用户
	 *
	 * @param account 用户账号
	 * @return 用户
	 */
	User getByAccount(String account);

	/**
	 * 根据用户账号、密码获取用户
	 *
	 * @param account 用户账号
	 * @param password 密码
	 * @return 用户
	 */
	User get(String account, String password);

	/**
	 * 查询用户列表
	 *
	 * @param userQuery 查询参数
	 * @return 用户列表
	 */
	List<User> list(UserQuery userQuery);

	List<User> search(UserQuery userQuery);

	/**
	 * 获取用户基础信息
	 *
	 * @param userIds 用户ID
	 * @return 用户基础信息
	 */
	Map<Long, User> listBaseInfoMap(Set<Long> userIds);

	/**
	 * 禁用用户
	 *
	 * @param id 用户ID
	 */
	void disabled(Long id);

	/**
	 * 启用用户
	 *
	 * @param id 用户ID
	 */
	void enabled(Long id);

	/**
	 * 更新用户
	 *
	 * @param user 用户信息
	 * @return
	 */
	void update(User user);

	/**
	 * 删除用户
	 *
	 * @param id 用户ID
	 * @return
	 */
	void delete(Long id);

	/**
	 * 新增用户
	 *
	 * @param user 用户信息
	 */
	void add(User user);

}
